package com.sg.dto.biz.bff.common;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffMemberMsgReceiveDto
 * @使用场景
 */
@Data
public class BffMemberMsgReceiveDto implements Serializable {

    /**
     * 成员接收消息ID
     */
    @ApiModelProperty("成员接收消息ID")
    private String memberMessageId;

    /**
     * 接收的消息ID
     */
    @ApiModelProperty("接收的消息ID")
    private String messageId;

    /**
     * 消息标题
     */
    @ApiModelProperty("消息标题")
    private String messageTitle;

    /**
     * 转换格式后消息内容
     */
    @ApiModelProperty("转换格式后消息内容")
    private String messageContent;

    /**
     * 消息访问链接
     */
    @ApiModelProperty("消息访问链接")
    private String messageContentUrl;

    /**
     * 是否已读 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否已读")
    private String isRead;

    /**
     * 已读时间
     */
    @ApiModelProperty("已读时间")
    private Date readTime;

    /**
     * 消息重要紧急度层级
     */
    @ApiModelProperty("消息重要紧急度层级")
    private Long messageImportantLevel;

    /**
     * 是否展示消息发送时间 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否展示消息发送时间")
    private String isShowSendTime;

    /**
     * 成员通道关系ID
     */
    @ApiModelProperty("成员通道关系ID")
    private String memberChannelRelationId;

    /**
     * 所属身份人员ID
     */
    @ApiModelProperty("所属身份人员ID")
    private String originalRoleMemberId;

    /**
     * 所属个人账号ID
     */
    @ApiModelProperty("所属个人账号ID")
    private String userId;

    /**
     * 发送方角色 SYSTEM:第三方系统 USER:用户 ASSISTANT:助手
     */
    @ApiModelProperty("发送方角色")
    private String messageRole;

    /**
     * 发送方身份人员ID
     */
    @ApiModelProperty("发送方身份人员ID")
    private String senderOriginalRoleMemberId;

    /**
     * 发送方账号ID
     */
    @ApiModelProperty("发送方账号ID")
    private String senderUserId;

    /**
     * 发送方头像地址
     */
    @ApiModelProperty("发送方头像地址")
    private String senderProfilePictureAddress;

    /**
     * 发送方姓名
     */
    @ApiModelProperty("发送方姓名")
    private String nameOfSender;

    /**
     * 虚拟形象ID
     */
    @ApiModelProperty("虚拟形象ID")
    private String virtualImageId;

    /**
     * 虚拟形象名称
     */
    @ApiModelProperty("虚拟形象名称")
    private String virtualImageName;

    /**
     * 虚拟形象图片
     */
    @ApiModelProperty("虚拟形象图片")
    private String virtualImage;

    /**
     * 虚拟形象简介
     */
    @ApiModelProperty("虚拟形象简介")
    private String virtualImageDesc;

    /**
     * 人物经典语句
     */
    @ApiModelProperty("人物经典语句")
    private String characterClassicPhrase;

    /**
     * 是否自定义形象 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否自定义形象")
    private String isCustomImage;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 冗余部门名称
     */
    @ApiModelProperty("冗余部门名称")
    private String deptShortName;

    /**
     * 必选冗余职务名称
     */
    @ApiModelProperty("必选冗余职务名称")
    private String positionIdName;
    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;
    /**
     * 消息使用通道类别 INTELLIGENT_STUDY:智能学习 INTELLIGENT_CUSTOMER_SERVICE:智能客服 NOTIFICATION_ANNOUNCEMENT:通知公告 CONTENT_COMMUNICATION:内容沟通 WORK_CIRCLE:工作圈 IDEA:想法 ADDRESS_BOOK:通讯录
     */
    @ApiModelProperty("消息使用通道类别")
    private String msgChannelClassCode;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffMemberMsgReceiveDto that = (BffMemberMsgReceiveDto) o;
        return memberMessageId == that.memberMessageId && messageId == that.messageId && messageTitle == that.messageTitle && messageContent == that.messageContent && messageContentUrl == that.messageContentUrl && isRead == that.isRead && readTime == that.readTime && messageImportantLevel == that.messageImportantLevel && isShowSendTime == that.isShowSendTime && memberChannelRelationId == that.memberChannelRelationId && originalRoleMemberId == that.originalRoleMemberId && userId == that.userId && messageRole == that.messageRole && senderOriginalRoleMemberId == that.senderOriginalRoleMemberId && senderUserId == that.senderUserId && senderProfilePictureAddress == that.senderProfilePictureAddress && nameOfSender == that.nameOfSender && virtualImageId == that.virtualImageId && virtualImageName == that.virtualImageName && virtualImage == that.virtualImage && virtualImageDesc == that.virtualImageDesc && characterClassicPhrase == that.characterClassicPhrase && isCustomImage == that.isCustomImage && operateTime == that.operateTime && deptShortName == that.deptShortName && positionIdName == that.positionIdName && idCardName == that.idCardName && msgChannelClassCode == that.msgChannelClassCode;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), memberMessageId, messageId, messageTitle, messageContent, messageContentUrl, isRead, readTime, messageImportantLevel, isShowSendTime, memberChannelRelationId, originalRoleMemberId, userId, messageRole, senderOriginalRoleMemberId, senderUserId, senderProfilePictureAddress, nameOfSender, virtualImageId, virtualImageName, virtualImage, virtualImageDesc, characterClassicPhrase, isCustomImage, operateTime, deptShortName, positionIdName, idCardName, msgChannelClassCode);
    }

}
